import { normalizeContainer } from '../../../../../global';
import { create_static_focusDisplay_mana } from '../../focusDisplay';
import {
  select_node_content_id,
  select_node_id,
  select_node_progress_id,
  select_node_view_id,
  spacename_select_node,
} from '../DataDefine/sourceData';
import {
  prop_select_node_defprop_suffix,
  // eslint-disable-next-line no-unused-vars
  select_node_prop,
} from './cla_select_node_prop';

/**
 * 浮动元素 全局管理集 目标注册
 */
let focusDisplay_spacename = create_static_focusDisplay_mana(
  spacename_select_node
);

const select_node_staticNodeTag = 'select_node_staticNode';

class select_node_staticNode {
  get [Symbol.toStringTag]() {
    return select_node_staticNodeTag;
  }

  /**
   *
   * @param {select_node_prop} props
   */
  constructor(props) {
    this.props = props;

    /**
     * 元素 视窗
     */
    this.dom_view = normalizeContainer(this.#suffix(select_node_view_id));

    /**
     * 元素 主体
     */
    this.dom_select_node = normalizeContainer(this.#suffix(select_node_id));

    /**
     * 内容 容器
     */
    this.dom_content = normalizeContainer(this.#suffix(select_node_content_id));

    /**
     * 进度 元素
     */
    this.dom_progress = normalizeContainer(
      this.#suffix(select_node_progress_id)
    );

    /**
     * 浮动元素 operate
     */
    let focusDisplay_op = focusDisplay_spacename.create_new_focusDisplay_dom();

    this.dom_focusDisplay = focusDisplay_op.targetEl;

    this.dom_focusDisplay_container = this.dom_focusDisplay.firstChild;
  }

  /**
   * 接受 属性
   * @type {select_node_prop}
   */
  props;

  /**
   * 元素 视窗
   */
  dom_view;

  /**
   * 元素 主体
   */
  dom_select_node;

  /**
   * 内容 容器
   */
  dom_content;

  /**
   * 进度 元素
   */
  dom_progress;

  /**
   * @type {HTMLDialogElement}
   *
   * 浮动元素 主体
   */
  dom_focusDisplay;

  /**
   * @type {HTMLElement}
   *
   * 浮动元素 容器
   */
  dom_focusDisplay_container;

  /**
   * 整合 给定 的 后缀 信息 作为 特定 id
   * @param {string} id
   * @returns
   */
  #suffix(id) {
    return `${id}_${this.props[prop_select_node_defprop_suffix]}`;
  }
}

export { select_node_staticNode };
